package net.cyue.web.easyquery.core.db.data;

import net.cyue.web.easyquery.core.db.QueryType;
import net.cyue.web.easyquery.core.db.SQLType;
import net.cyue.web.easyquery.core.db.util.SQLTypeDetector;

public class SQLInfo {
    protected final String sql;
    protected final SQLType sqlType;
    protected QueryType queryType;

    private SQLInfo(String sql) {
        this(sql, SQLType.fromSQL(sql), QueryType.QUERY_LIST);
    }
    private SQLInfo(String sql, QueryType queryType) {
        this(sql, SQLType.fromSQL(sql), queryType);
    }
    public SQLInfo(String sql, SQLType sqlType) {
        this(sql, sqlType, QueryType.QUERY_LIST);
    }
    public SQLInfo(String sql, SQLType sqlType, QueryType queryType) {
        this.sql = sql;
        this.sqlType = sqlType;
        this.queryType = queryType;
    }

    /**
     * 从 SQL 中创建 SQLInfo，自动判断类型，性能较差，尽量不用
     * @param sql 语句
     * @return SQLInfo
     */
    public static SQLInfo fromSQL(String sql) {
        return new SQLInfo(sql);
    }
    /**
     * 从 SQL 中创建 SQLInfo，自动判断类型，性能较差，尽量不用
     * @param sql 语句
     * @param queryType 查询类型
     * @return SQLInfo
     */
    public static SQLInfo fromSQL(String sql, QueryType queryType) {
        return new SQLInfo(sql, queryType);
    }

    public String getSql() {
        return this.sql;
    }
    public SQLType getSQLType() {
        return this.sqlType;
    }
    public QueryType getQueryType() {
        return this.queryType;
    }
}
